
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" lang="zh_Hans">
  <head>
    <meta http-equiv="X-UA-Compatible" content="IE=Edge" />
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Django version 0.95 release notes &#8212; Django 3.2.6.dev 文档</title>
    <link rel="stylesheet" href="../_static/default.css" type="text/css" />
    <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
    <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
    <script type="text/javascript" src="../_static/jquery.js"></script>
    <script type="text/javascript" src="../_static/underscore.js"></script>
    <script type="text/javascript" src="../_static/doctools.js"></script>
    <script type="text/javascript" src="../_static/language_data.js"></script>
    <link rel="index" title="索引" href="../genindex.html" />
    <link rel="search" title="搜索" href="../search.html" />
    <link rel="next" title="Archive of security issues" href="security.html" />
    <link rel="prev" title="Django version 0.96 release notes" href="0.96.html" />



 
<script src="../templatebuiltins.js"></script>
<script>
(function($) {
    if (!django_template_builtins) {
       // templatebuiltins.js missing, do nothing.
       return;
    }
    $(document).ready(function() {
        // Hyperlink Django template tags and filters
        var base = "../ref/templates/builtins.html";
        if (base == "#") {
            // Special case for builtins.html itself
            base = "";
        }
        // Tags are keywords, class '.k'
        $("div.highlight\\-html\\+django span.k").each(function(i, elem) {
             var tagname = $(elem).text();
             if ($.inArray(tagname, django_template_builtins.ttags) != -1) {
                 var fragment = tagname.replace(/_/, '-');
                 $(elem).html("<a href='" + base + "#" + fragment + "'>" + tagname + "</a>");
             }
        });
        // Filters are functions, class '.nf'
        $("div.highlight\\-html\\+django span.nf").each(function(i, elem) {
             var filtername = $(elem).text();
             if ($.inArray(filtername, django_template_builtins.tfilters) != -1) {
                 var fragment = filtername.replace(/_/, '-');
                 $(elem).html("<a href='" + base + "#" + fragment + "'>" + filtername + "</a>");
             }
        });
    });
})(jQuery);</script>

  </head><body>

    <div class="document">
  <div id="custom-doc" class="yui-t6">
    <div id="hd">
      <h1><a href="../index.html">Django 3.2.6.dev 文档</a></h1>
      <div id="global-nav">
        <a title="Home page" href="../index.html">Home</a>  |
        <a title="Table of contents" href="../contents.html">Table of contents</a>  |
        <a title="Global index" href="../genindex.html">Index</a>  |
        <a title="Module index" href="../py-modindex.html">Modules</a>
      </div>
      <div class="nav">
    &laquo; <a href="0.96.html" title="Django version 0.96 release notes">previous</a>
     |
    <a href="index.html" title="Release notes" accesskey="U">up</a>
   |
    <a href="security.html" title="Archive of security issues">next</a> &raquo;</div>
    </div>

    <div id="bd">
      <div id="yui-main">
        <div class="yui-b">
          <div class="yui-g" id="releases-0.95">
            
  <div class="section" id="s-django-version-0-95-release-notes">
<span id="django-version-0-95-release-notes"></span><h1>Django version 0.95 release notes<a class="headerlink" href="#django-version-0-95-release-notes" title="永久链接至标题">¶</a></h1>
<p>Welcome to the Django 0.95 release.</p>
<p>This represents a significant advance in Django development since the 0.91
release in January 2006. The details of every change in this release would be
too extensive to list in full, but a summary is presented below.</p>
<div class="section" id="s-suitability-and-api-stability">
<span id="suitability-and-api-stability"></span><h2>Suitability and API stability<a class="headerlink" href="#suitability-and-api-stability" title="永久链接至标题">¶</a></h2>
<p>This release is intended to provide a stable reference point for developers
wanting to work on production-level applications that use Django.</p>
<p>However, it's not the 1.0 release, and we'll be introducing further changes
before 1.0. For a clear look at which areas of the framework will change (and
which ones will <em>not</em> change) before 1.0, see the <code class="docutils literal notranslate"><span class="pre">api-stability.txt</span></code> file,
which lives in the docs/ directory of the distribution.</p>
<p>You may have a need to use some of the features that are marked as
&quot;subject to API change&quot; in that document, but that's OK with us as long as it's
OK with you, and as long as you understand APIs may change in the future.</p>
<p>Fortunately, most of Django's core APIs won't be changing before version 1.0.
There likely won't be as big of a change between 0.95 and 1.0 versions as there
was between 0.91 and 0.95.</p>
</div>
<div class="section" id="s-changes-and-new-features">
<span id="changes-and-new-features"></span><h2>Changes and new features<a class="headerlink" href="#changes-and-new-features" title="永久链接至标题">¶</a></h2>
<p>The major changes in this release (for developers currently using the 0.91
release) are a result of merging the 'magic-removal' branch of development.
This branch removed a number of constraints in the way Django code had to be
written that were a consequence of decisions made in the early days of Django,
prior to its open-source release. It's now possible to write more natural,
Pythonic code that works as expected, and there's less &quot;black magic&quot; happening
behind the scenes.</p>
<p>Aside from that, another main theme of this release is a dramatic increase in
usability. We've made countless improvements in error messages, documentation,
etc., to improve developers' quality of life.</p>
<p>The new features and changes introduced in 0.95 include:</p>
<ul class="simple">
<li>Django now uses a more consistent and natural filtering interface for
retrieving objects from the database.</li>
<li>User-defined models, functions and constants now appear in the module
namespace they were defined in. (Previously everything was magically
transferred to the <code class="docutils literal notranslate"><span class="pre">django.models.*</span></code> namespace.)</li>
<li>Some optional applications, such as the FlatPage, Sites and Redirects
apps, have been decoupled and moved into <code class="docutils literal notranslate"><span class="pre">django.contrib</span></code>. If you don't
want to use these applications, you no longer have to install their
database tables.</li>
<li>Django now has support for managing database transactions.</li>
<li>We've added the ability to write custom authentication and authorization
backends for authenticating users against alternate systems, such as
LDAP.</li>
<li>We've made it easier to add custom table-level functions to models,
through a new &quot;Manager&quot; API.</li>
<li>It's now possible to use Django without a database. This simply means
that the framework no longer requires you to have a working database set
up just to serve dynamic pages. In other words, you can just use
URLconfs/views on their own. Previously, the framework required that a
database be configured, regardless of whether you actually used it.</li>
<li>It's now more explicit and natural to override save() and delete()
methods on models, rather than needing to hook into the pre_save() and
post_save() method hooks.</li>
<li>Individual pieces of the framework now can be configured without
requiring the setting of an environment variable. This permits use of,
for example, the Django templating system inside other applications.</li>
<li>More and more parts of the framework have been internationalized, as
we've expanded internationalization (i18n) support. The Django
codebase, including code and templates, has now been translated, at least
in part, into 31 languages. From Arabic to Chinese to Hungarian to Welsh,
it is now possible to use Django's admin site in your native language.</li>
</ul>
<p>The number of changes required to port from 0.91-compatible code to the 0.95
code base are significant in some cases. However, they are, for the most part,
reasonably routine and only need to be done once. A list of the necessary
changes is described in the <a class="reference external" href="https://code.djangoproject.com/wiki/RemovingTheMagic">Removing The Magic</a> wiki page. There is also an
easy <a class="reference external" href="https://code.djangoproject.com/wiki/MagicRemovalCheatSheet">checklist</a> for reference when undertaking the porting operation.</p>
</div>
<div class="section" id="s-problem-reports-and-getting-help">
<span id="problem-reports-and-getting-help"></span><h2>Problem reports and getting help<a class="headerlink" href="#problem-reports-and-getting-help" title="永久链接至标题">¶</a></h2>
<p>Need help resolving a problem with Django? The documentation in the
distribution is also available <a class="reference internal" href="../index.html"><span class="doc">online</span></a> at the <a class="reference external" href="https://www.djangoproject.com/">Django website</a>.
The <a class="reference internal" href="../faq/index.html"><span class="doc">FAQ</span></a> document is especially recommended, as it contains
a number of issues that come up time and again.</p>
<p>For more personalized help, the <a class="reference external" href="https://groups.google.com/g/django-users">django-users</a> mailing list is a very active
list, with more than 2,000 subscribers who can help you solve any sort of
Django problem. We recommend you search the archives first, though, because
many common questions appear with some regularity, and any particular problem
may already have been answered.</p>
<p>Finally, for those who prefer the more immediate feedback offered by IRC,
there's a <code class="docutils literal notranslate"><span class="pre">#django</span></code> channel on <code class="docutils literal notranslate"><span class="pre">irc.libera.chat</span></code> that is regularly
populated by Django users and developers from around the world. Friendly people
are usually available at any hour of the day -- to help, or just to chat.</p>
<p>Thanks for using Django!</p>
<p>The Django Team
July 2006</p>
</div>
</div>


          </div>
        </div>
      </div>
      
        
          <div class="yui-b" id="sidebar">
            
      <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
        <div class="sphinxsidebarwrapper">
  <h3><a href="../contents.html">Table of Contents</a></h3>
  <ul>
<li><a class="reference internal" href="#">Django version 0.95 release notes</a><ul>
<li><a class="reference internal" href="#suitability-and-api-stability">Suitability and API stability</a></li>
<li><a class="reference internal" href="#changes-and-new-features">Changes and new features</a></li>
<li><a class="reference internal" href="#problem-reports-and-getting-help">Problem reports and getting help</a></li>
</ul>
</li>
</ul>

  <h4>上一个主题</h4>
  <p class="topless"><a href="0.96.html"
                        title="上一章">Django version 0.96 release notes</a></p>
  <h4>下一个主题</h4>
  <p class="topless"><a href="security.html"
                        title="下一章">Archive of security issues</a></p>
  <div role="note" aria-label="source link">
    <h3>本页</h3>
    <ul class="this-page-menu">
      <li><a href="../_sources/releases/0.95.txt"
            rel="nofollow">显示源代码</a></li>
    </ul>
   </div>
<div id="searchbox" style="display: none" role="search">
  <h3>快速搜索</h3>
    <div class="searchformwrapper">
    <form class="search" action="../search.html" method="get">
      <input type="text" name="q" />
      <input type="submit" value="转向" />
      <input type="hidden" name="check_keywords" value="yes" />
      <input type="hidden" name="area" value="default" />
    </form>
    </div>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
        </div>
      </div>
              <h3>Last update:</h3>
              <p class="topless">7月 23, 2021</p>
          </div>
        
      
    </div>

    <div id="ft">
      <div class="nav">
    &laquo; <a href="0.96.html" title="Django version 0.96 release notes">previous</a>
     |
    <a href="index.html" title="Release notes" accesskey="U">up</a>
   |
    <a href="security.html" title="Archive of security issues">next</a> &raquo;</div>
    </div>
  </div>

      <div class="clearer"></div>
    </div>
  </body>
</html>